<?php

/**
 * Created by PhpStorm.
 * User: Cristiano Ronaldo
 * Date: 12/31/13
 * Time: 12:12 PM
 */
class UserController extends BaseController
{

    public function getLogin()
    {
        return View::make('user.login');
    }

    public function getRegister()
    {
        return View::make('user.register');
    }

    public function getUser()
    {
        $users = Users::getUser();
        return View::make('user.success')->with('users', $users);
    }

    public function getSuccess()
    {
        return View::make('user.success');
    }

    public function getLoginSuccess(){
        return View::make('user.login_success');
    }

    //LOGIN BY POST METHOD
    public function postLogin()
    {
        $input = Input::all();


        if(!isset($_SESSION['login_times']))
        {
            $_SESSION['login_times'] = 0;
        }


        $_SESSION['login_times'] = $_SESSION['login_times'] + 1;



        if ($_SESSION['login_times'] < 3) {

            $message = array('required' => 'Tên tài khoản hoặc mật khẩu sai.');

            $rules = array('username', 'password' => 'required');
            $valid = Validator::make($input, $rules, $message);

            return $this->authenticateMethod($valid, $input);
        }
        else{
            $message = array('required' => 'Tên tài khoản hoặc mật khẩu sai.',
                            'captcha.required' => 'Nhập mã xác thực.',
                            'captcha.captcha' => 'Mã xác thực sai.'
            );

            $rules = array('username', 'password' => 'required',
                            'captcha' => 'required|captcha'
            );
            $valid = Validator::make($input, $rules, $message);

            return $this->authenticateMethod($valid, $input);
        }
    }

    //REGISTER BY POST METHOD
    public function postRegister()
    {

        $input = Input::all();

        //ERROR MESSAGE
        $messages = array(
            'username.required' => 'Tên đăng nhập không được rỗng.',
            'username.regex' => 'Tên đăng nhập không được chứa ký tự đặc biệt.',
            'username.unique' => 'Tên đăng nhập này đã được sử dụng.',
            'password.required' => 'Mật khẩu không hợp lệ.',
            'repassword.required' => 'Xác nhận lại mật khẩu.',
            'repassword.same' => 'Xác nhận mật khẩu sai.',
            'lname.required' => 'Tên không được rỗng.',
            'fname.required' => 'Họ không được rỗng',
            'email.required' => 'Email không được rỗng.',
            'email.unique' => 'Email này đã được sử dụng.',
            'email.email' => 'Email không hợp lệ',
            'captcha.required' => 'Nhập mã xác thực.',
            'captcha.captcha' => 'Mã xác thực sai.',
            'agree_checkbox.accepted' => 'Xác nhận đồng ý điều khoản của Freetips88.'
        );

        $rules = array(
            'username' => 'required|regex:/^([a-z,0-9])+$/i|unique:users',
            'password' => 'required',
            'repassword' => 'required|same:password',
            'lname' => 'required',
            'fname' => 'required',
            'email' => 'required|unique:users|email',
            'captcha' => 'required|captcha',
            'agree_checkbox' => 'accepted'
        );

        $valid = Validator::make($input, $rules, $messages);

        if ($valid->passes()) {

            $username = $input['username'];
            $password = $input['password'];
            $fname = $input['fname'];
            $lname = $input['lname'];
            $email = $input['email'];

            $password = md5($password);

            $result = Users::register($username, $password, $email, $fname, $lname);

            if ($result != null) {
                return Redirect::to('success');
            } else {
                return Redirect::to('register');
            }
        } else {
            return Redirect::to('register')->withInput()->withErrors($valid);
        }
    }


    /**
     * @param $valid
     * @param $input
     * @return mixed
     */

    //LOGIN AUTHENTICATION EDXACTED METHOD
    public function authenticateMethod($valid, $input)
    {
        if ($valid->passes()) {
            $username = $input['username'];
            $password = $input['password'];

            $password = md5($password);

            $result = Users::login($username, $password);


            if ($result != null) {
                foreach ($result as $user) {
                    $_SESSION['username'] = $user->username;
                }
                $_SESSION['login_times'] = 0;
                return Redirect::to('login_success');//->with('users',$user->username);
            } else {
                $message = 'Tên tài khoản hoặc mật khẩu sai.';
                return View::make('user.login')->with('err', $message);
            }
        } else {
            return Redirect::to('login')->withInput()->withErrors($valid);
        }
    }

    public function sendMail(){
        Mail::send(array('user.login','', function(){
            
        }));
    }
}